home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- set -e
- export LC_ALL=C
-
- type=$1
- preversion=$2
-
- package_name()
- {
- echo libc6
- }
-
- # element() is a helper function for file-rc:
- element() {
- local element list IFS
-
- element="$1"
-
- [ "$2" = "in" ] && shift
- list="$2"
- [ "$list" = "-" ] && return 1
- [ "$list" = "*" ] && return 0
-
- IFS=","
- set -- $list
- case $element in
- "$1"|"$2"|"$3"|"$4"|"$5"|"$6"|"$7"|"$8"|"$9")
- return 0
- esac
- return 1
- }
-
- # filerc (runlevel, service) returns /etc/init.d/service, if service is
- # running in $runlevel:
- filerc() {
- local runlevel basename
- runlevel=$1
- basename=$2
- while read LINE
- do
- case $LINE in
- \#*|"") continue
- esac
-
- set -- $LINE
- SORT_NO="$1"; STOP="$2"; START="$3"; CMD="$4"
- [ "$CMD" = "/etc/init.d/$basename" ] || continue
-
- if element "$runlevel" in "$START" || element "S" in "$START"
- then
- echo "/etc/init.d/$basename"
- return 0
- fi
- done < /etc/runlevel.conf
- echo ""
- }
-
- checkpkgver () {
- local status pkg
- pkg=$1
- status=$(dpkg -s $pkg 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g')
- if [ -n "$status" ] && [ "$status" != "not-installed" ] && [ "$status" != "config-files" ]; then
- echo $(dpkg -s $pkg 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//');
- fi
- }
-
- if [ "$type" = "configure" ]
- then
- # Add support for /etc/ld.so.conf.d
- if [ -e /etc/ld.so.conf ]; then
- [ -z "$(tail -n 1 /etc/ld.so.conf)" ] || echo >> /etc/ld.so.conf
- else
- touch /etc/ld.so.conf
- fi
- if ! grep -q '^include /etc/ld.so.conf.d/.*\.conf$' /etc/ld.so.conf ; then
- echo 'include /etc/ld.so.conf.d/*.conf' >> /etc/ld.so.conf
- fi
-
- # We don't use a registry anymore, remove the old file
- rm -f /etc/ld.so.hwcappkgs
-
- # /etc/ld.so.nohwcap code: NOHWCAP
- # Handle upgrades when libc-opt package has been installed.
- # When a /etc/ld.so.nohwcap file exists, ld.so only use libraries
- # from /lib, and ignore all optimised libraries. This file is
- # inconditionaly created in the preinst script of libc.
-
- # Get the list of optimized packages for a given architecture
- # Before removing a package from this list, make sure it appears
- # in the Conflicts: line of libc.
- case $(dpkg --print-architecture) in
- alpha)
- hwcappkgs="libc6-alphaev67"
- ;;
- i386)
- hwcappkgs="libc6-i686 libc6-xen"
- ;;
- kfreebsd-i386)
- hwcappkgs="libc0.1-i686"
- ;;
- sparc)
- hwcappkgs="libc6-sparcv9 libc6-sparcv9b libc6-sparcv9v libc6-sparcv9v2 libc6-sparc64b libc6-sparc64v libc6-sparc64v2"
- ;;
- esac
-
- # We check the version between the current installed libc and
- # all optimized packages (on architectures where such packages
- # exists).
- all_upgraded=yes
- if [ -n "$hwcappkgs" ]; then
- for pkg in $hwcappkgs ; do
- ver=$(dpkg -l $pkg 2>/dev/null | sed -e '/^i/!d;' -e "s/^i.\s\+$pkg\s\+//;s/\s.*//g")
- if [ -n "$ver" ] && [ "$ver" != "2.10.1-0ubuntu15" ]; then
- all_upgraded=no
- fi
- done
- fi
-
- # If the versions of all optimized packages are the same as the libc
- # one, we could remove /etc/ld.so.nohwcap. Otherwise, it will be removed
- # when all optimized packages are upgraded or removed.
- if [ "$all_upgraded" = yes ] ; then
- rm -f /etc/ld.so.nohwcap
- fi
-
- # Load debconf module if available
- if [ -f /usr/share/debconf/confmodule ] ; then
- . /usr/share/debconf/confmodule
- fi
-
- if [ -n "$preversion" ]; then
- if [ ! -d /var/mail ] && [ ! -L /var/mail ]; then
- ln -sf spool/mail /var/mail
- fi
- if dpkg --compare-versions "$preversion" lt 2.9-5; then
- check="apache2-common apache apache-ssl apache-perl autofs at"
- check="$check boa cucipop courier-authdaemon cron cups exim"
- check="$check exim4-base dovecot-common cucipop lprng lpr"
- check="$check lpr-ppd mysql-server nis openbsd-inetd"
- check="$check openldapd postfix postfix-tls rsync samba"
- check="$check sasl2-bin slapd smail sendmail snmpd ssh"
- check="$check spamassassin vsftpd wu-ftpd wu-ftpd-academ wwwoffle"
- check="$check webmin dropbear"
- # NSS services check: NSS_CHECK
- echo -n "Checking for services that may need to be restarted..."
- # Only get the ones that are installed, and configured
- check=$(dpkg -s $check 2> /dev/null | egrep '^Package:|^Status:' | awk '{if ($1 ~ /^Package:/) { package=$2 } else if ($0 ~ /^Status: .* installed$/) { print package }}')
- # some init scripts don't match the package names
- check=$(echo $check | \
- sed -e's/\bapache2-common\b/apache2/g' \
- -e's/\bat\b/atd/g' \
- -e's/\bdovecot-common\b/dovecot/g' \
- -e's/\bexim4-base\b/exim4/g' \
- -e's/\blpr\b/lpd/g' \
- -e's/\blpr-ppd\b/lpd-ppd/g' \
- -e's/\bmysql-server\b/mysql/g' \
- -e's/\bsasl2-bin\b/saslauthd/g' \
- )
- echo
- echo "Checking init scripts..."
- rl=$(runlevel | sed 's/.*\ //')
- for service in $check; do
- if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
- idl=$(ls /etc/init.d/${service} 2> /dev/null | head -n 1)
- if [ -n "$idl" ] && [ -x $idl ]; then
- services="$service $services"
- else
- echo "WARNING: init script for $service not found."
- fi
- else
- if [ -f /usr/share/file-rc/rc ] || [ -f /usr/lib/file-rc/rc ] && [ -f /etc/runlevel.conf ]; then
- idl=$(filerc $rl $service)
- else
- idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -1)
- fi
- if [ -n "$idl" ] && [ -x $idl ]; then
- services="$service $services"
- fi
- fi
- done
- if [ -n "$services" ]; then
-
- if [ -f /usr/share/debconf/confmodule ] ; then
- db_version 2.0
- db_reset glibc/restart-services
- db_set glibc/restart-services "$services"
- if [ "$RELEASE_UPGRADE_MODE" = desktop ]; then
- db_input medium glibc/restart-services || true
- else
- db_input critical glibc/restart-services || true
- fi
- db_go || true
- db_get glibc/restart-services
- if [ "x$RET" != "x" ]
- then
- services="$RET"
- else
- services=""
- fi
- else
- echo
- echo "Name Service Switch update in the C Library: post-installation question."
- echo
- echo "Running services and programs that are using NSS need to be restarted,"
- echo "otherwise they might not be able to do lookup or authentication any more"
- echo "(for services such as ssh, this can affect your ability to login)."
- echo "Note: restarting sshd/telnetd should not affect any existing connections."
- echo
- echo "The services detected are: "
- echo " $services"
- echo
- echo "If other services have begun to fail mysteriously after this upgrade, it is"
- echo "probably necessary to restart them too. We recommend that you reboot your"
- echo "machine after the upgrade to avoid NSS-related troubles."
- echo
- frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'`
- if [ "$frontend" = noninteractive ]; then
- echo "Non-interactive mode, restarting services"
- answer=yes
- else
- echo -n "Do you wish to restart services? [Y/n] "
- read answer
- case $answer in
- N*|n*) services="" ;;
- *) ;;
- esac
- fi
- fi
- echo
- if [ "$services" != "" ]; then
- echo "Restarting services possibly affected by the upgrade:"
- failed=""
- for service in $services; do
- if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
- idl="invoke-rc.d ${service}"
- elif [ -f /usr/share/file-rc/rc ] || [ -f /usr/lib/file-rc/rc ] && [ -f /etc/runlevel.conf ]; then
- idl=$(filerc $rl $service)
- else
- idl=$(ls /etc/rc${rl}.d/S??${service} 2> /dev/null | head -1)
- fi
- echo -n " $service: stopping..."
- $idl stop > /dev/null 2>&1 || true
- sleep 2
- echo -n "starting..."
- if $idl start > /dev/null 2>&1; then
- echo "done."
- else
- echo "FAILED! ($?)"
- failed="$service $failed"
- fi
- done
- echo
- if [ -n "$failed" ]; then
- if [ -f /usr/share/debconf/confmodule ] ; then
- db_fset glibc/restart-failed seen false
- db_subst glibc/restart-failed services "$failed"
- if [ "$RELEASE_UPGRADE_MODE" = desktop ]; then
- db_input medium glibc/restart-failed || true
- else
- db_input critical glibc/restart-failed || true
- fi
- db_go || true
- else
- echo "The following services failed to start: $failed"
- echo
- echo "You will need to start these manually by running \`/etc/init.d/<service> start'"
- echo "If the service still fails to start, you may need to file a bug on"
- echo "$(package_name) or the service involved."
- frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'`
- if [ "$frontend" != noninteractive ]; then
- echo
- echo -n "Press ENTER to continue: "
- read foo
- fi
- fi
- else
- echo "Services restarted successfully."
- fi
- fi
- # Shut down the frontend, to make sure none of the
- # restarted services keep a connection open to it
- if [ -f /usr/share/debconf/confmodule ] ; then
- db_stop
- fi
- else
- echo "Nothing to restart."
- fi
- fi # end upgrading and $preversion lt 2.6-1
- fi # Upgrading
-
- # Generate cache file /usr/lib/gconv/gconv-modules.cache
- iconvconfig || true
-
- if [ "$(stat -c %d/%i /)" = "$(stat -Lc %d/%i /proc/1/root 2>/dev/null)" ]; then
- # the devicenumber/inode pair of / is the same as that of /sbin/init's
- # root, so we're *not* in a chroot
- (telinit u ; sleep 1)
- fi
- fi
-
- # Automatically added by dh_makeshlibs
- if [ "$1" = "configure" ]; then
- ldconfig
- fi
- # End automatically added section
-
-
- exit 0
-